package com.xyf.config;

import com.xyf.domain.Goods;
import com.xyf.mapper.GoodsMapper;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.List;

/**
 * 1. 每天10点 晚上8点 通过定时任务 将mysql的库存 同步到redis中去
 * 2. 为了测试方便 希望项目启动的时候 就同步数据
 */
@Component
public class DataSync {

    @Resource
    private GoodsMapper goodsMapper;

    @Resource
    private StringRedisTemplate redisTemplate;

//    @Scheduled(cron = "* * 10 * * ? ")
//    public void initData() {
//
//    }

    /**
     * 我希望这个方法在项目启动之后
     * 并且在这个类的属性注入完毕以后
     *
     * bean的生命周期
     *
     * 实例化 new
     * 属性复制
     * 初始化 （前PostConstruct/中InitializingBean/后BeanPostProcessor）自定义的一个initMethod方法
     * 使用
     * 销毁
     * -------------
     */
    @PostConstruct
    public void initData() {
        List<Goods> goodsList = goodsMapper.selectSeckillGoods();
        if (CollectionUtils.isEmpty(goodsList)) {
            return;
        }
        goodsList.forEach(goods -> {
            redisTemplate.opsForValue().set("goodsId:" + goods.getId(), goods.getStocks().toString());
        });
    }

}
